// 1、
function Person() {
    this.name = 'Jack';
}
var p = new Person();
console.log(p.name);//'Jack'
var q = Person();
console.log(q);//undefied
console.log(name);//报错 没有name这个变量存在
console.log(q.name);//报错 undefiend也没有name属性


// 2、
/**function Person() {
    this.name = 'Jack';
    return 'Tom';
}
var p = new Person();
console.log(p);//{ name: 'Jack' }
console.log(p.name);
**/


// 3
// 当构造函数中显式返回一个对象时，使用new关键字创建实例得到的就是这个返回的对象，而不是基于this构建的默认对象了。
/**function Person() {
    this.name = 'Jack';
    return { age: 18 };
}
var p = new Person();
console.log(p);//{ age: 18 }
console.log(p.name);
console.log(p.age);
**/


//4
const promise = new Promise((resolve, reject) => {
    console.log(1);
    console.log(2);
});
promise.then(() => {
    console.log(3);
});
console.log(4);

